在web服务器(Heroku)上承载可运行jar文件(Discord bot)的java
我刚刚在一个可运行的jar中创建了一个简单的Discord机器人。(作为免责声明,当涉及到网络时,我是一个noob。)我正在寻找一种在线免费运行的方式,我读到了所有这些VPS网站,但没有一个提供无限的免费计划。因此,我偶然发现了一个名为Heroku的网站,它允许我在这个月的大部分时间里运行它。我基本上已经解决了所有问题,但有一个错误我无法修复:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch
我的Discord机器人没有连接到Heroku的服务器,我想这就是问题所在,但我不知道如何修复它。有没有人遇到过类似的问题?我是否打算以正确的方式托管我的bot?谢谢
编辑:以下是完整的日志:
2016-06-11T17:00:56.792783+00:00 app[web.1]: 17:00:56.792 [main] DEBUG d.btobastian.javacord.ImplDiscordAPI - Requested gateway wss://gateway.discord.gg (token: **************************************************NdxxxW0oQ)
2016-06-11T17:00:56.765456+00:00 app[web.1]: 17:00:56.765 [main] DEBUG d.btobastian.javacord.ImplDiscordAPI - Requesting gateway (token: **************************************************NdxxxW0oQ)
2016-06-11T17:00:57.199263+00:00 app[web.1]: 17:00:57.199 [ReadingThread] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Sending connect packet
2016-06-11T17:00:57.267527+00:00 app[web.1]: 17:00:57.267 [ReadingThread] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Received READY-packet!
2016-06-11T17:00:57.270636+00:00 app[web.1]: 17:00:57.270 [ReadingThread] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Updating status (game: none, idle: false)
2016-06-11T17:01:38.508359+00:00 app[web.1]: 17:01:38.507 [pool-2-thread-1] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Sending heartbeat (interval: 41250)
2016-06-11T17:02:19.751552+00:00 app[web.1]: 17:02:19.751 [pool-2-thread-1] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Sending heartbeat (interval: 41250)
2016-06-11T17:02:22.866430+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch
2016-06-11T17:02:23.649874+00:00 heroku[web.1]: Process exited with status 137
因此,我的应用程序实际上并没有与Heroku服务器交互,它明显地“超时”。当我在本地运行它时,一切正常,但当我将它上传到Heroku应用程序时,它“超时”我一直在寻找绑定$PORT的方法,但到目前为止没有成功。我已将其包含在Procfile中,但没有结果:
web: java $JAVA_OPTS -Dserver.port=$PORT -jar ideaprojects.jar --host=0.0.0.0 --port=$PORT
我以前从未与ports互动过,有人能帮我吗?再次感谢
Edit2:我甚至试图通过在他们的“java入门”中添加java代码来运行我的机器人。Heroku没有崩溃,但我的机器人似乎也没有运行
# 1 楼答案
出现此错误是因为
Procfile
配置为web。您需要将Procfile
配置为工作者进程你可以试试这个
Procfile
配置:worker: java -jar target/*.jar
你也可以查看这个页面:https://devcenter.heroku.com/articles/run-non-web-java-processes-on-heroku
# 2 楼答案
Heroku用于托管web应用程序。它不适用于托管不属于您正在Heroku上运行的web应用程序的进程,尝试运行这样的进程不会很好
你需要一个VPS来托管你的机器人。是的,你必须为此付出代价